热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

客人|生命线_UML建模UML建模之时序图

篇首语:本文由编程笔记#小编为大家整理,主要介绍了UML建模UML建模之时序图相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了UML建模 UML建模之时序图相关的知识,希望对你有一定的参考价值。




您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦
😁 1. 社区逛一逛,周周有福利,周周有惊喜。码农飞哥社区,飞跃计划
💪🏻 2. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通
❤️ 3. Python爬虫专栏,系统性的学习爬虫的知识点。9.9元买不了吃亏,买不了上当,持续更新中 。python爬虫入门进阶
❤️ 4. Ceph实战,从原理到实战应有尽有。 Ceph实战
❤️ 5. Java高并发编程入门,打卡学习Java高并发。 Java高并发编程入门
关注下方公众号,众多福利免费嫖;加我VX进群学习,学习的路上不孤单



文章目录


    • 时序图的介绍
    • 基本元素
      • 对象
      • 生命线
      • 消息
      • 激活
      • 结构化控制

    • 综合例子
    • 参考
    • 粉丝专属福利



时序图的介绍

时序图是按照时间顺序显示对象交互的图。它显示了参与交互的对象和所交互信息的先后顺序,用来表示用例图中的行为,用例图是一种交互图。

在UML中,时序图将交互关系表示为一张二维图。其中,纵向标示时间轴,时间沿竖线从上向下进行,按照时间依次列出各个对象所发出和接受的消息,横坐标标示了交互中的各个对象。


基本元素

时序图中包含如下几个元素: 对象,生命线,激活,消息,结构化控制


对象

时序图中的对象其实就是功能需求的各个参与者,在时序图中可以被激活的参与者都可以作为对象。UML中对象的名称默认放在生命线顶部的方框中。


生命线

生命线标示一个对象存在的生命周期,具体来说,在生命线所代表的时间内,对象一直都可以被访问,可以一直给对象发消息,两个对象之间通过消息连接起来。


消息

消息用于对象之间传递信息,对象之间互通信息就是通过消息,消息分为:
同步消息(Synchronous Message):用于对象间同步调用
异步消息(Aynchronous Message):用于对象间异步调用
返回消息(Return Message):用于一个对象对另一个对象的响应
自关联消息(Self-Message): 自关联消息用于对象内部自己调用
如下图所示,展示了各种消息的示例。


激活

当一个对象发出消息或者接收到消息,则该对象就会被激活。


结构化控制

结构化控制主要用于表示代码中判断,循环,终止等情况,在时序图中的结构化控制有如下几种:


  1. Alternative fragment(denoted “alt”) 标示 if…then…else 表示一种多条件分支

    表示当 balance>0 时执行accept()方法,否则执行 reject()方法

  2. Option fragment (denoted “opt”) 标示Switch, 表示一种单条件分支


当参数校验正确时则调用 保存数据的接口。
3. Parallel fragment (denoted “par”) 标示同时发生,表示并发执行

表示save(),notify()以及entrypoint()三个方法同时并发执行。


  1. Loop fragment(denoted “loop”) 标示for,表示循环的意思

  • 不限制次数的循环

  • 限制次数的循环


    该循环最少执行5次&#xff0c;最多执行10次&#xff0c;当保护条件 size<0 条件为假时循环终止执行。


  1. Break fragment(denoted “break”) 标示break, 表示退出循环


综合例子

下面以客人到餐厅就餐为例进行说明&#xff1a;

客人到餐厅就餐&#xff0c;服务员提供菜单&#xff0c;
客人点菜后把菜单交给服务员。服务员向客人确定菜单后&#xff0c;将菜单提交给大堂经理。
大堂经理把菜单提交给大厨&#xff0c;大厨完成菜品后传递给大堂经理&#xff0c;大堂经理安排服务员传菜。有的客人可能需要酒水&#xff0c;有的客人不需要酒水。
客人结束用餐后&#xff0c;服务员提供账单&#xff0c;客人结账。


  1. 确定对象
    这里的对象有&#xff1a; 客人&#xff0c;服务员&#xff0c;大堂经理&#xff0c;后厨。
  2. 确定交互消息
    就餐&#xff0c; 提供菜单&#xff0c;确定菜单&#xff0c;将菜单提交大堂经理等都是消息
  3. 要考虑到一些结构化控制
    比如有的客人可能需要酒水&#xff0c;有的客人不需要酒水。
  4. 画时序图

参考

UML之时序图
UML官网


粉丝专属福利



软考资料&#xff1a;实用软考资料


面试题&#xff1a;5G 的Java面试题


学习资料&#xff1a;50G的各类学习资料


脱单秘籍&#xff1a;回复【脱单】


并发编程&#xff1a;回复【并发编程】
&#x1f447;&#x1f3fb; 验证码 可通过搜索下方 公众号 获取&#x1f447;&#x1f3fb;



推荐阅读
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • HashMap的相关问题及其底层数据结构和操作流程
    本文介绍了关于HashMap的相关问题,包括其底层数据结构、JDK1.7和JDK1.8的差异、红黑树的使用、扩容和树化的条件、退化为链表的情况、索引的计算方法、hashcode和hash()方法的作用、数组容量的选择、Put方法的流程以及并发问题下的操作。文章还提到了扩容死链和数据错乱的问题,并探讨了key的设计要求。对于对Java面试中的HashMap问题感兴趣的读者,本文将为您提供一些有用的技术和经验。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • 关于CMS收集器的知识介绍和优缺点分析
    本文介绍了CMS收集器的概念、运行过程和优缺点,并解释了垃圾回收器的作用和实践。CMS收集器是一种基于标记-清除算法的垃圾回收器,适用于互联网站和B/S系统等对响应速度和停顿时间有较高要求的应用。同时,还提供了其他垃圾回收器的参考资料。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
author-avatar
埼埼popo_514
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有